/*
 *********************************************************************************
 *  Copyright www.ebidding.com.cn 2014-09-10 Authors: 闫广坤 <ygk@ebidding.com.cn> *
 *********************************************************************************
 */
package com.example.demo.core.util;

import com.example.demo.core.constant.Constants;
import org.apache.ibatis.ognl.Ognl;

import java.util.Date;

/**
 * 功能描述:实体类工具.
 * 作者:闫广坤.
 * 创建时间:2014-09-10.
 * 版本:2.0.0.
 */
public class EntityUtil {

	/**
	 * 作者:闫广坤.
	 * 创建时间:2014-09-10.
	 * 方法描述:设置创建时间,创建人,更新时间,更新人.
	 */
	public static void setValue(Object obj,String accessToken) {
		
		setValue(obj,"id",accessToken);
	}

	public static void setValue(Object obj) {
		setValue(obj,null);
	}
	
	/**
	 * 
	 * 作者:闫广坤
	 * 创建时间：2014-11-25 上午9:16:34
	 * 方法描述：设置更新时间,更新人.
	 */
	public static void setUpdateValue(Object obj,String accessToken) {
		
		try { 
			Ognl.setValue("updateTime",obj, new Date());
			Ognl.setValue("updateUserId",obj,getUserId(accessToken));
		} catch (Exception e) { 
		}
	}

	public static void setUpdateValue(Object obj) {
		setUpdateValue(obj,null);
	}

	/**
	 * 作者:闫广坤.
	 * 创建时间:2014-09-10.
	 * 方法描述:设置创建时间,创建人,更新时间,更新人.
	 */
	public static void setValue(Object obj,String primaryKeyName,String accessToken) {
		
		try {
			Object id = Ognl.getValue(primaryKeyName,obj);
			Integer userId = getUserId(accessToken);
			Ognl.setValue("updateTime",obj, new Date());
			if(id == null) {
				Ognl.setValue("createTime",obj, new Date());
				Ognl.setValue("isDeleted",obj, Constants.IS_DELETED_NO);
				Ognl.setValue("createUserId",obj, userId);
				Ognl.setValue("ownerUserId",obj, userId);
				Ognl.setValue("ownerOrgId",obj, getOrgId(accessToken));
			}
			
			Ognl.setValue("updateUserId",obj,userId);
			
		} catch (Exception e) { 
			
		}
	}

	public static Integer getUserId(String accessToken) {

		try {
			Integer userId = UserUtil.getUserId(accessToken);
			return userId;
		} catch(Exception e) {
			return null;
		}
	}

	public static Integer getOrgId(String accessToken) {

		try {
			Integer orgId = -1;
			return orgId;
		} catch(Exception e) {
			return null;
		}
	}

	public static String toString(Object value){
		return value == null ? "" : value.toString();
	}
}
